// 创建数据库:
var db = new PouchDB('hrm');
// 登录用户信息
var userInfo;
// 登录用户角色信息
var roleInfo;
// 登录用户权限信息
var perInfo;

$(function () {
    // 设置iframe高度自适应
    $("#menuFrame").height(window.innerHeight - 90);
    // 获取并设置登录用户信息
    getUserInfo();
    // 获取并设置组织机构信息
    getOrg();
});

/**
 * 获取登录用户信息
 */
function getUserInfo() {
    $.get(baseUrl + '/user/getAuth', function (data) {
        if (data) {
            userInfo = data;
            $("#userName").html(userInfo.user_name);
            roleInfo = new Array();
            for(var i in userInfo.roles){
                roleInfo.push(userInfo.roles[i].name);
            }
            perInfo = new Array();
            for(var i in userInfo.permissions){
                perInfo.push(userInfo.permissions[i].name);
            }
            // 存储角色信息、权限信息
            try {
                // 如果角色信息存在则更新，不存在则新增
                db.get('roleInfo', function (error, doc) {
                    if (error) {
                        if(error.status = 404){
                            db.put({
                                _id: 'roleInfo',
                                data: roleInfo
                            });
                        }
                    } else {
                        db.remove(doc);
                        db.put({
                            _id: 'roleInfo',
                            data: roleInfo
                        });
                    }
                });
                // 如果角色信息存在则更新，不存在则新增
                db.get('perInfo', function (error, doc) {
                    if (error) {
                        if(error.status = 404){
                            db.put({
                                _id: 'perInfo',
                                data: perInfo
                            });
                        }
                    } else {
                        db.remove(doc);
                        db.put({
                            _id: 'perInfo',
                            data: perInfo
                        });
                    }
                });
            } catch (err) {
                console.log(err);
            }
            // 设置显示菜单
            setMainMenu();
        }
    });
}

// 生成左边主菜单
function setMainMenu() {
    // 定岗定员菜单
    var postManageMenu = "<li class=\"treeview\">" +
        "<a href=\"#\"><i class=\"fa fa-map\"></i> <span>定岗定员</span>" +
        "<span class=\"pull-right-container\">" +
        "<i class=\"fa fa-angle-left pull-right\"></i>" +
        "</span>" +
        "</a>" +
        "<ul class=\"treeview-menu\">";
    // 是否显示岗位设置菜单
    if($.inArray( "postInfo:query", perInfo) > -1){
        postManageMenu += "<li><a href=\"map.html\" target=\"menuFrame\"><i class=\"fa fa-user\"></i>岗位设置</a></li>";
    }
    // 是否显示岗位列表菜单
    if($.inArray( "postInfo:queryByPage", perInfo) > -1){
        postManageMenu += "<li><a href=\"post.html\" target=\"menuFrame\"><i class=\"fa fa-list\"></i>岗位列表</a></li>";
    }
    postManageMenu += "</ul></li>";
    // 是否显示定岗定员菜单
    if($.inArray( "sys_admin", roleInfo) > -1 || $.inArray( "post_admin", roleInfo) > -1) {
        $("#mainMenu").append(postManageMenu);
    }
    // 系统设置菜单
    var sysManageMenu = "<li class=\"treeview\">" +
                    "<a href=\"#\"><i class=\"fa fa-cog\"></i> <span>系统设置</span>" +
                        "<span class=\"pull-right-container\">" +
                            "<i class=\"fa fa-angle-left pull-right\"></i>" +
                        "</span>" +
                    "</a>" +
                    "<ul class=\"treeview-menu\">";
    // 是否显示用户设置菜单
    if($.inArray( "user:queryByPage", perInfo) > -1){
        sysManageMenu += "<li><a href=\"system/user.html\" target=\"menuFrame\"><i class=\"fa fa-user\"></i>用户设置</a></li>";
    }
    // 是否显示角色设置菜单
    if($.inArray( "role:queryByPage", perInfo) > -1){
        sysManageMenu += "<li><a href=\"system/role.html\" target=\"menuFrame\"><i class=\"fa fa-users\"></i>角色设置</a></li>";
    }
    sysManageMenu += "</ul></li>";
    // 是否显示系统设置菜单
    if($.inArray( "sys_admin", roleInfo) > -1 || $.inArray( "post_admin", roleInfo) > -1) {
        $("#mainMenu").append(sysManageMenu);
    }
    // 基础数据菜单
    var basicDataMenu = "<li class=\"treeview\">" +
        "<a href=\"#\"><i class=\"fa fa-map\"></i> <span>基础数据</span>" +
        "<span class=\"pull-right-container\">" +
        "<i class=\"fa fa-angle-left pull-right\"></i>" +
        "</span>" +
        "</a>" +
        "<ul class=\"treeview-menu\">";

    basicDataMenu += "<li><a href=\"basicData/postLinkInfo.html\" target=\"menuFrame\"><i class=\"fa fa\"></i>岗位序列设置</a></li>";
    basicDataMenu += "<li><a href=\"basicData/postTypeInfo.html\" target=\"menuFrame\"><i class=\"fa fa\"></i>岗位性质设置</a></li>";
    basicDataMenu += "<li><a href=\"basicData/postNatureInfo.html\" target=\"menuFrame\"><i class=\"fa fa\"></i>岗位属性设置</a></li>";
    basicDataMenu += "<li><a href=\"basicData/postAreaInfo.html\" target=\"menuFrame\"><i class=\"fa fa\"></i>岗位区域设置</a></li>";
    basicDataMenu += "<li><a href=\"basicData/postShiftArrangementInfo.html\" target=\"menuFrame\"><i class=\"fa fa\"></i>岗位班制设置</a></li>";
    basicDataMenu += "<li><a href=\"basicData/postSignInfo.html\" target=\"menuFrame\"><i class=\"fa fa\"></i>岗位视线状况设置</a></li>";
    basicDataMenu += "</ul></li>";

    // 是否显示基础数据菜单
    if($.inArray( "sys_admin", roleInfo) > -1 || $.inArray( "post_admin", roleInfo) > -1) {
        $("#mainMenu").append(basicDataMenu);
    }

}

/**
 * 获取SSO组织机构信息
 */
function getOrg() {
    var orgs = new Array();
    $.get(baseUrl + '/getSSO_Orgs', function (data) {
        if (data) {
            for(var i in data){
                orgs.push({id:data[i].data,value:data[i].label})
            }
            try {
                // 如果组织机构信息存在则更新，不存在则新增
                db.get('orgInfo', function (error, doc) {
                    if (error) {
                        if(error.status = 404){
                            db.put({
                                _id: 'orgInfo',
                                data: orgs
                            });
                        }
                    } else {
                        db.remove(doc);
                        db.put({
                            _id: 'orgInfo',
                            data: orgs
                        });
                    }
                });
            } catch (err) {
                console.log(err);
            }
        }
    });
}
